////称序列 a1, a2, ··· 是一个周期为 n 的循环序列，如果它满足 an + 1 = a1, an + 2 = a2, ···,an + i = ai(i ≥ 1) 。
////设序列 a1, a2, ··· 是一个周期为 n 的循环序列，给定它的前 n 项 a1, a2, ···, an 。
////现有 q 个询问，每个询问给定三个整数 l, r, t(1 ≤ l < r) ，
////表示询问从区间 al, al + 1, ···, ar中取两个下标相异的元素 ai 和 aj(l ≤ i, j ≤ r, i ̸ = j) ，有多少种方案满足 ai = aj = t 。
////对每个询问，你需要输出一个整数，表示方案数。
////输入描述
////本题只包含一组测试数据。
////第 1 行输入两个整数 n, q ，分别表示循环序列的周期和询问数。
////第 2 行输入 n 个整数 a1, ···, an ，表示循环序列的前 n 项。
////第 3 ∼(q + 2) 行每行输入三个整数 l, r, t(1 ≤ l < r) ，表示一个询问。
////输出描述
////输出 q 行，每行包含一个整数，其中第 i(1 ≤ i ≤ q) 行的整数表示第 i 个询问的答案。
////
////
////
////输入 
////6 3
////1 1 4 5 1 4
////1 6 1
////5 9 4
////5 10 5
////输出
////3
////1
////0
//
//
//#include <iostream>
//#include <algorithm>
//
//using namespace std;
//const int N = 1e6 + 10;
//int a[N];
//
//
//int main()
//{
//	ios::sync_with_stdio(0);
//	cin.tie(0);
//	cout.tie(0);
//
//	int n, q;
//	cin >> n >> q;
//	for (int i = 1; i <= n; i++) cin >> a[i];
//	while (q--)
//	{
//		int m = n;
//		int l, r, t;
//		cin >> l >> r >> t;
//
//		int cnt = 1;
//		while (m < r)
//		{
//			a[++m] = a[cnt++];
//			if (cnt > n) cnt = 1;
//		}
//
//		long long sum = 0;
//		for (int i = l; i <= r; i++)
//		{
//			//printf("%d ", a[i]);
//			if (a[i] == t) sum++;
//		}
//		//cout << endl;
//		cout << sum * (sum - 1) / 2 << endl;
//	}
//	return 0;
//}